package cn.edu.gduf.luowowo.article.service;


import cn.edu.gduf.luowowo.article.domain.StrategyContent;
import cn.edu.gduf.luowowo.article.domain.StrategyDetail;
import cn.edu.gduf.luowowo.article.query.StrategyDetailQuery;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 攻略明细服务
 */
public interface IStrategyDetailService {
    /**
     * 分页查询
     * @param qo
     * @return
     */
    PageInfo query(StrategyDetailQuery qo);
    /**
     * 查询所有
     * @return
     */
    List<StrategyDetail> list();
    /**
     * 查单个
     * @param id
     * @return
     */
    StrategyDetail get(Long id);

    /**
     * 添加或修改攻略明细(文章)
     * @param detail 攻略明细对象
     * @param tags 标签
     */
    void saveOrUpdate(StrategyDetail detail, String tags);

    /**
     * 根据攻略明细id获取文章内容
     * @param id id
     * @return 文章内容对象
     */
    StrategyContent getContent(Long id);

    /**
     * 根据攻略分类id查询相关的攻略文章
     * @param catalogId 攻略分类id
     * @return 攻略明细集合
     */
    List<StrategyDetail> queryByCatalogId(Long catalogId);

    /**
     * 查询当前目的地下的攻略文章点击量（阅读量）的前三篇
     * @param destId 目的地id
     * @return 攻略明细列表
     */
    List<StrategyDetail> queryDetailViewNumTop3(Long destId);

    PageInfo query1(StrategyDetailQuery qo);

    /**
     * 更新攻略明细中的点赞数/收藏数 等等...
     * @param detail
     */
    void updateStrategyDetailForStatis(StrategyDetail detail);

    /**
     * 单单查询所有攻略明细的id和subtitile
     * @return
     */
    List<StrategyDetail> queryDetailIdAndSubTitle();

    /**
     * 查询国内最火的5篇攻略明细 只要dest和title
     * @return
     */
    List<StrategyDetail> queryDetailUnaboardViewNumTop5();

}
